package singleton;

/**
 * @program: javase
 * @description: 枚举默认就是单例的，并且可防止被反射破坏
 * 在序列化的时候Java仅仅是将枚举对象的name属性输出到结果中，
 * 反序列化的时候则是通过java.lang.Enum的valueOf方法来根据名字查找枚举对象
 * 。同时，编译器是不允许任何对这种序列化机制的定制的，
 * 因此禁用了writeObject、readObject、readObjectNoData、writeReplace和readResolve等方法。
 * @author: luolidong
 * @create: 2021-06-12 15:48
 * @version: 1.0
 */
public enum  Singleton4 {
    INSTANCE;

    public static void main(String[] args) {
        Singleton4 instance = Singleton4.INSTANCE;
        Singleton4 instance1 = Singleton4.INSTANCE;
        String name = Singleton4.INSTANCE.name();
        System.out.println(name);
        System.out.println(instance==instance1);
    }
}
